This dataset includes keystrokes and other data from a CS1 (CS 1400) course at
Utah State University taught in Spring 2024. Files include:

* keystrokes.csv - Contains actions (e.g., keystrokes) and edits (e.g., inserts
  and deletes). Thus, when a user presses a key, it results in two events: an
  action that represents that actualy keystroke and an edit that represents the
  change to the file caused by the keystroke.
  Keystrokes are in mostly compliant ProgSnap2 format. See
  https://cssplice.github.io/progsnap2/ProgSnap2-v8-18Dec2020.pdf.
  Differences in columns from ProgSnap2 are:
  ** SourceLocation - One-dimensional index of the linearized program. The
     standard requires a line and column. We use a single index for efficiency
     purposes. For space purposes it is not prefixed by "text:" as given in the
     standard. A value of -1.0 means that the event is an action, not an edit.
  ** Code state is not maintained, so CodeStateID is omitted.
  ** ClientTimestamp - see note on timestamps at the end of this file.
  ** X-UserActionID - if this value is "edited" then, because of PyCharm event
     errors, the row may have been manually adjusted in terms of timestamp and
     event ordering.

* keystrokesEdits.csv - Subset of keystrokes.csv that contains only the FileInit
  and edit events.

* students1.csv and students2.csv - Assignment and exam scores and final grade
  for each student in each of the two sections.

* due1.csv and due2.csv - Assignment due dates for the two sections of the class.
  "Timestamp UTC" is given as a convenience: it corresponds with the timestamps
  in keystrokes.csv for ease of calculation of remaining time before the due
  date. "Timestamp UTC" is Unix Epoch time in UTC. See below for the course late
  policy.

* Assignment Descriptions - Descriptions for each of the assignments.

All timestamps in keystrokes.csv and runs.csv are from Java's
System.CurrentTimeMillis(), which gives Unix Epoch time in UTC. due.csv has
MDT/MST, UTC, and ms since the Unix epoch versions of the due dates.

Course late policy is as follows from the course syllabus: "Assignments are
due at 11:59PM of the due date. The official clock is the Canvas system.
Thus, if Canvas says it is late, then it is late. Assignments may not be
turned in late, as an extra day is already built in to the due date. You
will receive 100 grace points for your assignments. This means that you can
lose up to 100 points on assignments throughout the semester and still get
full credit for your final grade."
